本篇文章要介紹如何使用 CSS 創建一個簡單的「動態笑臉」,當滑鼠懸停時,笑臉的嘴部會改變角度,模擬出從微笑到稍微傷心再回到微笑的動畫效果
創建一個 smiley
容器,包含兩個眼睛和一個嘴巴
<div class="smiley">
<div class="eye left"></div>
<div class="eye right"></div>
<div class="mouth"></div>
</div>
left
和 right
進行定位使用 Flexbox
將頁面內容居中,確保笑臉位於畫面正中央
body {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
background-color: #f0f0f0;
}
設定 smiley
容器的大小和外觀,變成一個圓形並居中顯示,並添加一個過渡效果
.smiley {
position: relative;
width: 100px;
height: 100px;
background-color: #ffcc00;
border-radius: 50%;
display: flex;
justify-content: center;
align-items: center;
transition: transform 0.5s ease;
}
設定眼睛和嘴巴的具體樣式和位置,讓笑臉擁有基本的五官
.eye {
width: 15px;
height: 15px;
background-color: black;
border-radius: 50%;
position: absolute;
}
.left {
left: 30px;
top: 30px;
}
.right {
right: 30px;
top: 30px;
}
.mouth {
position: absolute;
left: 10px;
bottom: 20px;
width: 80px;
height: 100px;
border: 2.5px solid transparent;
border-bottom-color: #000;
border-radius: 50%;
box-sizing: border-box;
}
left
和 right
將它們分別定位在笑臉的左右當滑鼠懸停在笑臉上時,通過動畫來改變嘴巴的角度,模擬表情的變化
.smiley:hover .mouth {
animation: changeExpression 1s forwards;
}
:hover
時,開始應用 changeExpression
這個動畫,持續 1 秒
使用 @keyframes
定義笑臉嘴巴從微笑到稍微傷心再回到微笑的動畫過程
@keyframes changeExpression {
0% {
transform: rotate(0deg);
}
50% {
transform: rotate(-30deg);
}
100% {
transform: rotate(0deg);
}
}
rotate(-30deg)
,形成稍微傷心的表情rotate(0deg)
,回到初始的微笑狀態